<?php
namespace app\admin\controller;

use think\Db;
/**
 * #用户管理#{用户管理控制器}
 */
class Member extends Common{
	/**
	 * #用户管理#
	 * @return view
	 */
    function index(){
        $options=[
            'field'=>'id,login_name,name,status,tel,s_time,head_img,max_device,max_weixin,remark'
        ];
        $list=model($this->table)->readAll(['module_id'=>0],true,$options);
        $this->assign('list',$list);
        return view();
    }


    /**
     * #新增、修改用户#
     * @return view
     */
    public function upduser($id=0){
        if(request()->isAjax()||request()->isPost()){
            $this->superCheck();
            $data=[
                'login_name'=>input('login_name/s',''),
                'login_pwd'=>input('login_pwd/s',''),
                'name'=>input('name/s',''),
                'status'=>input('status/d',1),
                'head_img'=>input('head_img/s',''),
                'max_device'=>input('max_device/d',10),
                'max_weixin'=>input('max_weixin/d',10),
                'remark'=>input('remark/s',''),
            ];
            if($id>0){ //编辑操作
                $has=model($this->table)->where(['id'=>$id])->count();
                if(!$has){
                    $this->error('该用户不存在');
                }
                if(empty($data['login_pwd'])){
                    unset($data['login_pwd']);
                }else{
                    $data['login_pwd'] = encrypt_pwd($data['login_pwd']);
                }
                unset($data['login_name']);
                $data['id']=$id;
                $edit=model($this->table)->edit($data);
                $this->success('修改成功');
                die;
            }else{
                $validate=$this->validate($data,[
                    'login_name|登录名'=>'require',
                    'login_pwd|登录密码'=>'require',
                ]);
                if(true!==$validate){
                    $this->error($validate);
                }
                $has=model($this->table)->where(['login_name'=>$data['login_name']])->count();
                if($has){
                    $this->error('该登录名称已存在，请换一个试试');
                }
                $data['login_pwd'] = encrypt_pwd($data['login_pwd']);
                $data['s_time']=time();
                $add=model($this->table)->add($data);
                if(empty($add)){
                    $this->error('系统繁忙、操作失败');
                }
                // 获取默认角色信息
                $defaultRoles=model('role')->readAll(['is_default'=>1],0,['field'=>'id']);
                $auth=[];
                foreach ($defaultRoles as $v) {
                    $auth[]=[
                        'role_id'=>$v['id'],
                        'member_id'=>$add['id'],
                    ];
                }
                if(!empty($auth)){
                    model('role_member')->add($auth);
                }
                $this->success('添加成功');
            }
        }
    }
    /**
     * 会员启用、隐藏
     * @param  integer $id 用户ID
     * @return [type]      [description]
     */
    function close($id=0){
        if(request()->isAjax()||request()->isPost()){
            $this->superCheck();
            $ids=input('ids/a',[]); // 多项
            if($id<=0&&empty($ids)){
                $this->error(lang('Data does not exist'));
            }
            $where="";
            if(!empty($ids)){
                $ids=implode(',', $ids);
                $where=" `id` in ({$ids}) ";
            }else{
                $where=" `id`={$id} ";
            }
            $rs=model($this->table)->close($where,'status',true);
            if($rs){
                $this->success(lang('Successful operation'));
                die;
            }
            $this->error(lang('Failed operation'));
        }
    }
    /**
     * 会员删除
     * @param  integer $id 用户ID
     * @return [type]      [description]
     */
    function del($id=0){
        if(request()->isAjax()||request()->isPost()){
            $super_id=config('auth.super_id');
            $this->superCheck();
            $ids=input('ids/a',[]); // 多项
            if($id<=0&&empty($ids)){
                $this->error(lang('Data does not exist'));
            }
            if($id==$super_id){
                $this->error('超级管理员不允许删除');
            }
            
            $index=array_search($super_id,$ids);
            if($index){
                unset($ids[$index]);
            }
            $where=[
                'id'=>$id,
            ];
            if(!empty($ids)){
                $where=[
                    'id'=>['id','in',$ids]
                ];
            }
            
            $rs=model($this->table)->del($where);
            if($rs){
                $this->success(lang('Successful operation'));
                die;
            }
            $this->error(lang('Failed operation'));
        }
    }
    /**
     * #用户设备管理#
     * @return view
     */
    function device(){
        // 根据会员id获取设备信息
        $member_id = input('id');
        if ($member_id == '' || !is_numeric($member_id)) {
            $this->error('参数错误',url('index'));
        }
        $list = Db::name('device')->where('member_id','eq',$member_id)->field('id,login_name,name,sex,version,status,tel,udid')->order('id desc')->paginate();
        // 获取会员信息
        $member_info = Db::name('member')->where('id','eq',$member_id)->find();


        // $page = $list->toarray();
        // $data = json_encode($page['data']);
        $this->assign('list',$list);
        $this->assign('member',$member_info);
        // echo json_encode($data);die;
        return view();
    }

    /**
     * #修改用户设备#
     * @return view
     */
    function upddevice(){
        // 获取用户提交的信息
        $data = input('post.');
        // 获取要操作的设备关联的用户的id
        $data['member_id'] = input('member_id');
        // 获取当前用户id
        $uid = $this->user['id'];
        // 获取超级管理员的用户id
        $suid = config('auth.super_id');
        // var_dump($suid);
        // 获取当前素材关联的用户id
        // 判断当前用户是否是超级管理员
        

        // echo json_encode($data);die;
        // 判断用户id是否为空，判断用户输入值是否合法
        if (empty($data) && ($data['id'] == '' || !isset($data['id']))) {
            $this->error('非法操作');
        }
        elseif ($data['member_id'] == $suid && $uid != $suid) {
            // 修改的是超级管理员的信息，单该用户不是管理员
            $this->error('权限不足');
        }
        else if (!empty($data) && !isset($data['id'])) {
            unset($data['isTrusted']);
            // 判断设备是否到达上限，若到达上限则返回错误，不添加数据
            // 查找用户表，获取该用户的设备上限值
            $member = Db::name('member')->where('id','eq',$data['member_id'])->field('id,max_device')->find();
            $limit = $member['max_device'];
            // 统计已有设备数量
            $quant = Db::name('device')->where('member_id','eq',$data['member_id'])->count();
            // echo json_encode($quant);die;
            // 现在用户的设备上限(超级管理员不受限制)
            if ($limit <= $quant && $data['member_id'] != $suid && $uid != $suid) {
                $this->error('添加失败！该账号的设备已达到上限！');
            }
            
            // 组装数据
            $adddata = [];
            $adddata = $data;
            // $adddata['login_pwd'] = md5($data['login_pwd']);
            $adddata['s_time'] = time();
            $add = Db::name('device')->insert($adddata);
            // $add = Db::name('device')->getLastInsID();

            if ($add == 1) {
                $this->success('添加成功');
            }
            else{
                $this->error('添加失败');
            }
        }
        else if (!empty($data) && $data['id'] != '') {
            unset($data['login_name']);
            // 更新用户数据
            $upd = Db::name('device')->update($data);
            // 判断并返回操作结果
            if ($upd > 0) {
                $this->success('修改成功');
            }
            else{
                $this->error('修改失败');
            }
        }

    }

    /**
     * #设备微信管理#
     * @return view
     */
    public function software(){
        // 获取设备id
        $device_id = input('id');
        if ($device_id == '' || !is_numeric($device_id)) {
            $this->error('参数错误',url('index'));
        }
        // 根据设备id获取与该设备对应的微信号信息
        $list = Db::name('software')->where('device_id','eq',$device_id)->where('type_id','eq',1)->order('id desc')->paginate();
        // 根据设备id获取设备信息
        $device_info = Db::name('device')->where('id','eq',$device_id)->find();


        // $page = $list->toarray();
        // $data = json_encode($page['data']);
        $this->assign('list',$list);
        $this->assign('device',$device_info);
        // echo json_encode($list);die;
        return view();
    }

    /**
     * #修改设备微信#
     * @return view
     */
    function updsotf(){
        // 获取用户提交的信息
        $data = input('post.');
        // echo json_encode($data);die;
        
        // // 判断用户id是否为空，判断用户输入值是否合法
        // if (empty($data) || $data['id'] == '') {
        //     $this->error('非法操作');
        // }
        // // unset($data['login_name']);
        // $data['s_time'] = time();
        // // echo json_encode($data);
        // // 更新用户数据
        // $upd = Db::name('software')->update($data);
        // // 判断并返回操作结果
        // if ($upd > 0) {
        //     $this->success('修改成功');
        // }
        // else{
        //     $this->error('修改失败');
        // }

        
        // 获取当前用户id
        $uid = $this->user['id'];
        // 获取超级管理员的用户id
        $suid = config('auth.super_id');
        // var_dump($suid);
        // 获取当前素材关联的用户id
        if (empty($data) && ($data['id'] == '' || !isset($data['id']))) {
            $this->error('非法操作');
        }
        else if (!empty($data) && !isset($data['id'])) {
            unset($data['isTrusted']);
            $data['device_id'] = input('device_id');
            // 获取当前设备所属会员
            $device_info = Db::name('device')->field('member_id')->where('id','eq',$data['device_id'])->find();
            if (empty($device_info)) {
                $this->error('参数错误');
            }

            // 判断当前用户是否是超级管理员
            if ($device_info['member_id'] == $suid && $uid != $suid) {
                // 修改的是超级管理员的信息，单该用户不是管理员
                $this->error('权限不足');
            }
            
            // 判断账号是否到达上限，若到达上限则返回错误，不添加数据
            // 查找用户表，获取该用户的设备上限值
            $member = Db::name('member')->where('id','eq',$device_info['member_id'])->field('id,max_weixin')->find();
            $limit = $member['max_weixin'];
            // 统计已有设备数量
            $quant = Db::name('software')->where('device_id','eq',$data['device_id'])->where('type_id','eq',1)->count();
            // echo json_encode($limit);die;
            if ($limit <= $quant && $data['member_id'] != $suid && $uid != $suid) {
                $this->error('添加失败！该设备的微信号已达到上限！');
            }
            
            // 组装数据
            $adddata = [];
            $adddata = $data;
            // $adddata['login_pwd'] = md5($data['login_pwd']);
            $adddata['s_time'] = time();
            $adddata['type_id'] = 1;    // 账号类型设置为微信号
            $adddata['member_id'] = $device_info['member_id'];
            $add = Db::name('software')->insert($adddata);
            // $add = Db::name('software')->getLastInsID();

            if ($add == 1) {
                $this->success('添加成功');
            }
            else{
                $this->error('添加失败');
            }
        }
        else if (!empty($data) && $data['id'] != '') {

            
            // 判断当前用户是否是超级管理员
            if ($data['member_id'] == $suid && $uid != $suid) {
                // 修改的是超级管理员的信息，单该用户不是管理员
                $this->error('权限不足');
            }
            // unset($data['login_name']);
            // 更新用户数据
            $upd = Db::name('software')->update($data);
            // 判断并返回操作结果
            if ($upd > 0) {
                $this->success('修改成功');
            }
            else{
                $this->error('修改失败');
            }
        }

    }
}